home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 44 / Amiga Format CD44 (1999-08-26)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-10].iso / -in_the_mag- / basics / amos / artcoder.lha / ArtCoder / CollageSkeleton.AMOS / CollageSkeleton.amosSourceCode
AMOS Source Code  |  1996-01-12  |  8KB  |  227 lines

  1. 'Crude example of Collage Coder output, but usable as the guts for a more
  2. 'sophisticated collage generator.
  3.  
  4. Screen Open 0,352,240,32,Lowres : Flash Off : Curs Off : Hide : Cls 0
  5.  Palette $0,$370,$592,$0,$5B5,$97A,$826,$481,$7B2,$777,$999,$FC1,$A8A,$ECA,$EA9,$DB9,$685,$E52,$668,$DAB,$CAD,$50,$137,$953,$653,$530,$900,$965,$0,$88B,$779,$FFF
  6.  Set Paint 1 : Ink ,,0
  7. Screen Open 1,352,240,32,Lowres : Flash Off : Curs Off : Hide : Cls 0
  8.  Palette $0,$370,$592,$0,$5B5,$97A,$826,$481,$7B2,$777,$999,$FC1,$A8A,$ECA,$EA9,$DB9,$685,$E52,$668,$DAB,$CAD,$50,$137,$953,$653,$530,$900,$965,$0,$88B,$779,$FFF
  9.  Set Paint 1 : Ink ,,0 : 
  10. Proc SCRNCENTER
  11.  
  12. Screen Display 0,XOFFSET,YOFFSET,352,240
  13. Screen Display 1,XOFFSET,YOFFSET,352,240
  14. FRONTSCREEN=0 : BACKSCREEN=1
  15. Screen To Back BACKSCREEN : Screen BACKSCREEN : 
  16. Gosub TITLE : Screen To Front BACKSCREEN
  17. THEWAITRESS=Timer : While Timer<THEWAITRESS+120 : Wend 
  18.  
  19. While Mouse Key=0
  20.    Screen To Front BACKSCREEN
  21.    Swap FRONTSCREEN,BACKSCREEN : Wait Vbl 
  22.    Screen To Back BACKSCREEN : Wait Vbl : Screen BACKSCREEN
  23.    THEWAITRESS=Timer
  24.    Cls 1
  25.    For XX=1 To Rnd(8)+1
  26.       XOFF=Rnd(285)-20 : YOFF=Rnd(205)-20 : Gosub SHAPE
  27.    Next XX
  28.    For XX=1 To Rnd(5)+1
  29.       XOFF=Rnd(285)-20 : YOFF=Rnd(175)-20 : Gosub SKELETON
  30.    Next XX
  31.    While Timer<THEWAITRESS+30 : Wend 
  32. Wend 
  33. Show On : Edit 
  34.  
  35. TITLE:
  36. Data 48,82,24,106,21,140,71,152,288,160,329,172,338,159,316,97,259,93,216,56,186,77,160,44,117,80,87,38,54,52,-1
  37. Restore TITLE : Cls 1 : Ink 3 : Gosub PGON : Ink 31
  38. Data 33,131,52,91,60,104,63,113,60,133,58,134,44,133,35,117,49,131
  39. Data 62,135,75,125,86,92,88,52,81,84,79,133,80,113,93,101,103,102
  40. Data 101,112,83,114,81,109,87,130,96,135,112,129,123,121,122,108
  41. Data 113,108,108,115,107,128,109,134,119,139,140,136,153,118,157,95
  42. Data 159,56,151,54,145,92,150,122,161,142,177,142,194,130,198,112
  43. Data 187,104,180,117,190,139,204,142,216,128,226,79,223,97,204,96
  44. Data 245,97,223,97,223,119,228,139,241,145,245,125,256,110,248,118
  45. Data 244,133,251,146,262,149,272,142,273,125,267,114,258,111,274,112
  46. Data 284,107,289,115,279,148,289,125,300,115,308,116,314,127,310,141
  47. Data 308,148,314,157,324,157,-1
  48. Gosub PLINE : Return 
  49.  
  50. SKELETON:
  51. Data 0,11,7,8,12,20,6,18,0,12,-1
  52. Restore SKELETON : Set Paint 1 : Ink 31 : Gosub PGON
  53. Data 36,14,42,14,45,12,46,4,42,0,36,0,31,2,32,10,-1
  54. Gosub PGON : Gosub PGON
  55. Data 71,4,60,13,67,14,79,9,-1
  56. Gosub PGON
  57. Data 30,23,48,18,48,36,44,38,44,41,53,40,50,47,39,48,33,44,39,42,39,40,35
  58. Data 38,-1
  59. Gosub PGON
  60. Data 17,75,9,86,21,85,21,74,18,75,-1
  61. Data 48,18,62,28,60,12,64,14,63,17,66,32,62,29,62,32,58,28,48,21,-1
  62. Gosub PGON : 
  63. Data 39,14,37,15,37,17,41,17,42,20,38,20,39,17,41,17,40,14,-1
  64. Gosub PGON : 
  65. Data 29,22,18,31,12,20,7,21,11,23,14,34,17,33,18,36,30,25,-1
  66. Gosub PGON : 
  67. Data 16,74,18,72,5,61,7,60,5,56,30,48,30,45,36,47,34,49,8,58,7,60,11,60,20,71,21,74,-1
  68. Gosub PGON : 
  69. Data 54,44,70,58,72,58,69,61,73,63,67,78,76,86,65,88,62,77,66,78,63,75,67,72,68,61,54,47,50,46,-1
  70. Gosub PGON : Ink 0 : 
  71. Data 7,13,5,9,2,10,6,14,-1
  72. Gosub PLINE : 
  73. Data 69,9,74,6,76,8,71,10,-1
  74. Gosub PLINE : 
  75. Data 15,82,12,86,18,85,19,82,-1
  76. Gosub PLINE : 
  77. Data 69,83,72,87,67,87,67,84,-1
  78. Gosub PLINE : 
  79. Data 19,31,17,33,-1
  80. Gosub PLINE : 
  81. Data 35,6,36,6,37,8,35,8,-1
  82. Gosub PGON : 
  83. Data 40,7,40,5,42,5,43,7,-1
  84. Gosub PGON : 
  85. Data 32,30,32,28,38,24,-1
  86. Gosub PGON : 
  87. Data 33,33,33,31,40,28,-1
  88. Gosub PGON : 
  89. Data 35,38,35,36,41,33,-1
  90. Gosub PGON : 
  91. Data 48,34,44,32,48,32,-1
  92. Gosub PGON : 
  93. Data 48,27,48,29,43,27,-1
  94. Gosub PGON : 
  95. Data 48,23,48,24,43,23,-1
  96. Gosub PGON : 
  97. Data 38,45,42,46,42,44,39,44,-1
  98. Gosub PGON : 
  99. Data 48,45,49,43,47,43,-1
  100. Gosub PGON : 
  101. Data 36,12,37,11,41,11,43,10,41,12,38,12,-1
  102. Gosub PGON : Return 
  103.  
  104. SHAPE:
  105. Data 8,25,2,30,0,41,5,52,22,57,83,53,113,47,151,45,176,52,172,30,157,17,-1
  106. Restore SHAPE : Ink 21 : Gosub PGON : Ink Rnd(26)+4 : 
  107. Data 0,18,0,34,6,41,35,46,81,42,127,35,157,34,179,41,178,25,160,10,109,4,74,11,42,17,18,15,3,9,-1
  108. Gosub PGON : Return 
  109.  
  110.  
  111. PLINE:
  112.    Read X,Y : Add X,XOFF : Add Y,YOFF : Gr Locate X,Y
  113.    Do 
  114.       Read X : If X=-1 Then Exit 
  115.       Read Y : Add X,XOFF : Add Y,YOFF : Draw To X,Y
  116.    Loop : Return 
  117.  
  118. PGON:
  119.    Gosub PGON2 : P$="R"+Str$(P)-" " : Gosub P$ : Return 
  120. PGON2:
  121.    Read X01 : Read Y01 : X01=X01+XOFF : Y01=Y01+YOFF
  122.  
  123.    Read X02 : If X02=-1 Then P=1 : Return 
  124.    Read Y02 : Add X02,XOFF : Add Y02,YOFF
  125.  
  126.    Read X03 : If X03=-1 Then P=2 : Return 
  127.    Read Y03 : Add X03,XOFF : Add Y03,YOFF
  128.  
  129.    Read X04 : If X04=-1 Then P=3 : Return 
  130.    Read Y04 : Add X04,XOFF : Add Y04,YOFF
  131.  
  132.    Read X05 : If X05=-1 Then P=4 : Return 
  133.    Read Y05 : Add X05,XOFF : Add Y05,YOFF
  134.  
  135.    Read X06 : If X06=-1 Then P=5 : Return 
  136.    Read Y06 : Add X06,XOFF : Add Y06,YOFF
  137.  
  138.    Read X07 : If X07=-1 Then P=6 : Return 
  139.    Read Y07 : Add X07,XOFF : Add Y07,YOFF
  140.  
  141.    Read X08 : If X08=-1 Then P=7 : Return 
  142.    Read Y08 : Add X08,XOFF : Add Y08,YOFF
  143.  
  144.    Read X09 : If X09=-1 Then P=8 : Return 
  145.    Read Y09 : Add X09,XOFF : Add Y09,YOFF
  146.  
  147.    Read X10 : If X10=-1 Then P=9 : Return 
  148.    Read Y10 : Add X10,XOFF : Add Y10,YOFF
  149.  
  150.    Read X11 : If X11=-1 Then P=10 : Return 
  151.    Read Y11 : Add X11,XOFF : Add Y11,YOFF
  152.  
  153.    Read X12 : If X12=-1 Then P=11 : Return 
  154.    Read Y12 : Add X12,XOFF : Add Y12,YOFF
  155.  
  156.    Read X13 : If X13=-1 Then P=12 : Return 
  157.    Read Y13 : Add X13,XOFF : Add Y13,YOFF
  158.  
  159.    Read X14 : If X14=-1 Then P=13 : Return 
  160.    Read Y14 : Add X14,XOFF : Add Y14,YOFF
  161.  
  162.    Read X15 : If X15=-1 Then P=14 : Return 
  163.    Read Y15 : Add X15,XOFF : Add Y15,YOFF
  164.  
  165.    Read Y16 : P=15 : Return 
  166.  
  167. R1: Polygon X01,Y01 To X01,Y01 : Return 
  168. R2: Polygon X01,Y01 To X02,Y02 : Return 
  169. R3: Polygon X01,Y01 To X02,Y02 To X03,Y03 : Return 
  170. R4: Polygon X01,Y01 To X02,Y02 To X03,Y03 To X04,Y04 : Return 
  171. R5: Polygon X01,Y01 To X02,Y02 To X03,Y03 To X04,Y04 To X05,Y05 : Return 
  172. R6: Polygon X01,Y01 To X02,Y02 To X03,Y03 To X04,Y04 To X05,Y05 To X06,Y06 : Return 
  173. R7: Polygon X01,Y01 To X02,Y02 To X03,Y03 To X04,Y04 To X05,Y05 To X06,Y06 To X07,Y07 : Return 
  174. R8: Polygon X01,Y01 To X02,Y02 To X03,Y03 To X04,Y04 To X05,Y05 To X06,Y06 To X07,Y07 To X08,Y08 : Return 
  175. R9: Polygon X01,Y01 To X02,Y02 To X03,Y03 To X04,Y04 To X05,Y05 To X06,Y06 To X07,Y07 To X08,Y08 To X09,Y09 : Return 
  176. R10: Polygon X01,Y01 To X02,Y02 To X03,Y03 To X04,Y04 To X05,Y05 To X06,Y06 To X07,Y07 To X08,Y08 To X09,Y09 To X10,Y10 : Return 
  177. R11: Polygon X01,Y01 To X02,Y02 To X03,Y03 To X04,Y04 To X05,Y05 To X06,Y06 To X07,Y07 To X08,Y08 To X09,Y09 To X10,Y10 To X11,Y11 : Return 
  178. R12: Polygon X01,Y01 To X02,Y02 To X03,Y03 To X04,Y04 To X05,Y05 To X06,Y06 To X07,Y07 To X08,Y08 To X09,Y09 To X10,Y10 To X11,Y11 To X12,Y12 : Return 
  179. R13: Polygon X01,Y01 To X02,Y02 To X03,Y03 To X04,Y04 To X05,Y05 To X06,Y06 To X07,Y07 To X08,Y08 To X09,Y09 To X10,Y10 To X11,Y11 To X12,Y12 To X13,Y13 : Return 
  180. R14: Polygon X01,Y01 To X02,Y02 To X03,Y03 To X04,Y04 To X05,Y05 To X06,Y06 To X07,Y07 To X08,Y08 To X09,Y09 To X10,Y10 To X11,Y11 To X12,Y12 To X13,Y13 To X14,Y14 : Return 
  181. R15: Polygon X01,Y01 To X02,Y02 To X03,Y03 To X04,Y04 To X05,Y05 To X06,Y06 To X07,Y07 To X08,Y08 To X09,Y09 To X10,Y10 To X11,Y11 To X12,Y12 To X13,Y13 To X14,Y14 To X15,Y15 : Return 
  182.  
  183. Procedure SCRNCENTER
  184.    Shared XOFFSET,YOFFSET
  185. 'if ram:skeleton.config exists, read its contents to center screen,
  186. 'otherwise ask user to center screen...
  187.  
  188. FILE$="ram:skeleton.config" : Rem : For real progs, put it in S: not ram:  
  189. If Exist(FILE$)
  190.    Open In 1,FILE$
  191.    Input #1,XOFFSET,YOFFSET
  192.    Close 1 : Pop Proc
  193. Else 
  194.    SCRNWIDTH=352 : SCRNHEIGHT=240 : 
  195.    Screen 1 : Screen To Front 1 : 
  196.    Ink 31 : Pen 31 : Cls 1 : 
  197.    Box 0,0 To SCRNWIDTH-1,SCRNHEIGHT-1
  198.    Box 0,2 To 351,237 : Box 0,4 To 351,235
  199.    Locate 8,4 : Print "Carefully center the screen"
  200.    Locate 8,5 : Print "so you see a single white line"
  201.    Locate 8,6 : Print "on each edge of the screen."
  202.    Locate 8,8 : Print "Then click the mouse."
  203.    Ink 0
  204.    Locate 8,21 : Print "(You only have to do this"
  205.    Locate 8,22 : Print "the first time you run it on"
  206.    Locate 8,23 : Print "your system.)"
  207.    X Mouse=190 : Y Mouse=30 : Wait 10
  208.    While Mouse Click<>1 : 
  209.       XOFFSET=X Mouse-88 : YOFFSET=Y Mouse-38
  210.       Gosub CUTXOFFSET
  211.       Screen Display 1,XOFFSET,YOFFSET,352,240
  212.    Wend 
  213.  
  214. 'for real programs, put it in S: not ram: ...
  215.  
  216.    Open Out 1,"ram:skeleton.config"
  217.       Print #1,XOFFSET : Print #1,YOFFSET
  218.    Close 1 : Cls 0 : Pop Proc
  219. End If 
  220.  
  221. CUTXOFFSET:
  222.    If XOFFSET<96 Then XOFFSET=80 : Return 
  223.    If XOFFSET<112 Then XOFFSET=96 : Return 
  224.    If XOFFSET<128 Then XOFFSET=112 : Return 
  225.    If XOFFSET<144 Then XOFFSET=128
  226.    Return 
  227. End Proc